﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;


namespace QLMBMT
{
    public partial class FrmQLNCC_KH : DevExpress.XtraEditors.XtraForm
    {
        // Khai báo
        int sua = 0;
        int update = 0;
        private DataSet ds = new DataSet();
        private DataTable dt = new DataTable();
        private SqlDataAdapter da = new SqlDataAdapter();
        private SqlCommand com = new SqlCommand();

        private DataSet daS = new DataSet();
        private DataTable daT = new DataTable();
        private SqlDataAdapter daA = new SqlDataAdapter();
        private SqlCommand comm = new SqlCommand();

        classConnection _classConnection = new classConnection();

        // Hàm đưa dữ liệu lên các Lookup Edit và Data GridView
        public void LoadData()
        {

            // đổ dữu liệu vào data gridview
            com = new SqlCommand("Select * from NHA_CUNG_CAP", _classConnection.con);
            da = new SqlDataAdapter();
            da.SelectCommand = com;
            ds = new DataSet();
            da.Fill(ds);
            dgNCC.DataSource = ds.Tables[0];

            txtMaNCC.DataBindings.Clear();
            txtMaNCC.DataBindings.Add("EditValue", dgNCC.DataSource, "MANHACUNGCAP");
            txtTenNCC.DataBindings.Clear();
            txtTenNCC.DataBindings.Add("EditValue", dgNCC.DataSource, "TENNHACUNGCAP");
            txtDCNCC.DataBindings.Clear();
            txtDCNCC.DataBindings.Add("EditValue", dgNCC.DataSource, "DIACHINCC");
            txtSDTNCC.DataBindings.Clear();
            txtSDTNCC.DataBindings.Add("EditValue", dgNCC.DataSource, "SDTNCC");

            // Thiết lập trạng thái cho các control
            txtMaNCC.Properties.ReadOnly = true;
            txtTenNCC.Properties.ReadOnly = true;
            txtDCNCC.Properties.ReadOnly = true;
            txtSDTNCC.Properties.ReadOnly = true;

            
            btnThem.Enabled = true;
            btnSua.Enabled = true;
            btnXoa.Enabled = true;
            btnLuu.Enabled = false;
            btnHuy.Enabled = false;
            btnThoat.Enabled = true;
            dgNCC.Enabled = true;



            //  đổ dữu liệu vào data gridview
            comm = new SqlCommand("Select * from KHACH_HANG", _classConnection.con);
            daA = new SqlDataAdapter();
            daA.SelectCommand = comm;
            daS = new DataSet();
            daA.Fill(daS);
            dgKH.DataSource = daS.Tables[0];


            txtMaKH.DataBindings.Clear();
            txtMaKH.DataBindings.Add("EditValue", dgKH.DataSource, "MAKHACHHANG");
            txtTenKH.DataBindings.Clear();
            txtTenKH.DataBindings.Add("EditValue", dgKH.DataSource, "TENKHACHHANG");
            txtDCKH.DataBindings.Clear();
            txtDCKH.DataBindings.Add("EditValue", dgKH.DataSource, "DIACHIKH");
            txtSDTKH.DataBindings.Clear();
            txtSDTKH.DataBindings.Add("EditValue", dgKH.DataSource, "SDTKHACHHANG");

            // Thiết lập trạng thái cho các control
            txtMaKH.Properties.ReadOnly = true;
            txtTenKH.Properties.ReadOnly = true;
            txtDCKH.Properties.ReadOnly = true;
            txtSDTKH.Properties.ReadOnly = true;
     
            btnThemKH.Enabled = true;
            btnSuaKH.Enabled = true;
            btnXoaKH.Enabled = true;
            btnLuuKH.Enabled = false;
            btnHuyKH.Enabled = false;
            btnThoatKH.Enabled = true;
            dgKH.Enabled = true;

        }
        public FrmQLNCC_KH()
        {
            InitializeComponent();
            _classConnection.KetNoiCSDL();
            
        }

        // Xử lí sự kiện Load Form
        private void FrmQLNCC_KH_Load(object sender, EventArgs e)
        {
            LoadData();
        }

        // Xử lí sự kiện Click của nút "Thêm"
        private void btnThem_Click(object sender, EventArgs e)
        {
            // Thiết lập trạng thái cho các control
            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
            btnThoat.Enabled = true;
            txtMaNCC.ResetText();
            txtTenNCC.ResetText();
            txtDCNCC.ResetText();
            txtSDTNCC.ResetText();

            txtMaNCC.Properties.ReadOnly = false;
            txtTenNCC.Properties.ReadOnly = false;
            txtDCNCC.Properties.ReadOnly = false;
            txtSDTNCC.Properties.ReadOnly = false;
            dgNCC.Enabled = false;

        }

        // Xử lí sự kiện Click của nút "Sửa"
        private void btnSua_Click(object sender, EventArgs e)
        {
            // Thiết lập trạng thái cho các control
            sua = 1;
            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
            btnThoat.Enabled = true;
            txtMaNCC.Properties.ReadOnly = true;
            txtTenNCC.Properties.ReadOnly = false;
            txtSDTNCC.Properties.ReadOnly = false;
            txtDCNCC.Properties.ReadOnly = false;
            dgNCC.Enabled = false;
        }

        // Xử lí sự kiện Click của nút "Xóa"
        private void btnXoa_Click(object sender, EventArgs e)
        {
            // Thiết lập trạng thái cho các control
            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
            btnThoat.Enabled = true;
            if (MessageBox.Show("Ban co chac chan muon xoa?", "Thong bao", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                SqlCommand comm = new SqlCommand();
                comm.Connection = _classConnection.con;
                comm.CommandType = CommandType.Text;
                comm.CommandText = "Delete From NHA_CUNG_CAP Where MANHACUNGCAP=@MANHACUNGCAP";
                comm.Parameters.Add("MANHACUNGCAP", SqlDbType.NVarChar).Value = txtMaNCC.Text;
                comm.ExecuteNonQuery();
                MessageBox.Show("Xoa thanh cong");
                LoadData();
                
            }
        }

        // Xử lí sự kiện Click của nút "Lưu"
        private void btnLuu_Click(object sender, EventArgs e)
        {
            try
            {
                // Kiểm tra các trường phải nhập dữ liệu đầy đủ
                if (txtMaNCC.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'Mã Nhà cung cấp'", "Thông báo");
                    return;
                }


                if (txtTenNCC.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'Tên Nhà cung cấp'", "Thông báo");
                    return;
                }

                if (txtSDTNCC.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'SĐT Nhà cung cấp'", "Thông báo");
                    return;
                }

                if (txtDCNCC.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'Địa chỉ Nhà cung cấp'", "Thông báo");
                    return;
                }

                
                if (sua == 0)
                {
                    // Kiểm tra Mã nhà cung cấp khi đã tồn tại trong CSDL hay chưa thêm một nhà cung cấp mới 
                    SqlCommand comm = new SqlCommand();
                    comm.Connection = _classConnection.con;
                    comm.CommandType = CommandType.Text;
                    comm.CommandText = "Select * From NHA_CUNG_CAP Where MANHACUNGCAP=@MANHACUNGCAP";
                    comm.Parameters.Add("MANHACUNGCAP", SqlDbType.VarChar).Value = txtMaNCC.Text;
                    comm.ExecuteNonQuery();
                    da = new SqlDataAdapter();
                    ds = new DataSet();
                    da.SelectCommand = comm;
                    da.Fill(ds);
                    dt = ds.Tables[0];
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        MessageBox.Show("Đã tồn tại nhà cung cấp có mã '" + txtMaNCC.Text.ToUpper() + "'! \nVui lòng kiểm tra lại!");
                        return;
                    }

                    // Kiểm tra Tên nhà cung cấp đã tồn tại trong CSDL hay chưa khi thêm một nhà cung cấp mới
                    SqlDataAdapter daa = new SqlDataAdapter();
                    DataSet das = new DataSet();
                    DataTable dat = new DataTable();

                    SqlCommand commd = new SqlCommand();
                    commd.Connection = _classConnection.con;
                    commd.CommandType = CommandType.Text;
                    commd.CommandText = "Select * From NHA_CUNG_CAP Where TENNHACUNGCAP=@TENNHACUNGCAP";
                    commd.Parameters.Add("TENNHACUNGCAP", SqlDbType.VarChar).Value = txtTenNCC.Text;
                    commd.ExecuteNonQuery();
                    daa = new SqlDataAdapter();
                    das = new DataSet();
                    daa.SelectCommand = commd;
                    daa.Fill(das);
                    dat = das.Tables[0];
                    if (dat != null && dat.Rows.Count > 0)
                    {
                        MessageBox.Show("Đã tồn tại tên Nhà cung cấp'" + txtTenNCC.Text + "'! \nVui lòng kiểm tra lại!");
                        return;
                    }
                    //Thêm dữ liệu vào CSDL
                    com = _classConnection.con.CreateCommand();
                    com.CommandText = "Insert Into NHA_CUNG_CAP Values(@MANHACUNGCAP,@TENNHACUNGCAP,@DIACHINCC,@SDTNCC)";
                    com.Parameters.Add("@MANHACUNGCAP", SqlDbType.VarChar).Value = txtMaNCC.EditValue;
                    com.Parameters.Add("@TENNHACUNGCAP", SqlDbType.VarChar).Value = txtTenNCC.EditValue;
                    com.Parameters.Add("@DIACHINCC", SqlDbType.VarChar).Value = txtDCNCC.EditValue;
                    com.Parameters.Add("@SDTNCC", SqlDbType.VarChar).Value = txtSDTNCC.EditValue;
                    com.ExecuteNonQuery();

                    MessageBox.Show("Đã thêm nhà cung cấp thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
                else
                {
                    // Cập nhật dữ liệu của CSDL
                    txtMaKH.Properties.ReadOnly = true;
                    com = _classConnection.con.CreateCommand();
                    com.CommandText = "Update NHA_CUNG_CAP set MANHACUNGCAP= @MANHACUNGCAP, TENNHACUNGCAP = @TENNHACUNGCAP,DIACHINCC = @DIACHINCC, SDTNCC = @SDTNCC where MANHACUNGCAP=@MANHACUNGCAP";
                    com.Parameters.Add("@MANHACUNGCAP", SqlDbType.VarChar).Value = txtMaNCC.EditValue;
                    com.Parameters.Add("@TENNHACUNGCAP", SqlDbType.VarChar).Value = txtTenNCC.EditValue;
                    com.Parameters.Add("@DIACHINCC", SqlDbType.VarChar).Value = txtDCNCC.EditValue;
                    com.Parameters.Add("@SDTNCC", SqlDbType.VarChar).Value = txtSDTNCC.EditValue;
                    com.ExecuteNonQuery();

                    MessageBox.Show("Đã cập nhật thông tin nhà cung cấp!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);


                }
                LoadData();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }

        // Xử lí sự kiện Click của nút "Hủy"
        private void btnHuy_Click(object sender, EventArgs e)
        {
            LoadData();
        }

        // Xử lí sự kiện Click của nút "Thoát"
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
            _classConnection.con.Close();
        }

        // Xử lí sự kiện Click của nút "Thêm" Khách hàng
        private void btnThemKH_Click(object sender, EventArgs e)
        {
            // Thiết lập trạng thái cho các control
            btnThemKH.Enabled = false;
            btnSuaKH.Enabled = false;
            btnXoaKH.Enabled = false;
            btnLuuKH.Enabled = true;
            btnHuyKH.Enabled = true;
            btnThoatKH.Enabled = true;
            txtMaKH.ResetText();
            txtTenKH.ResetText();
            txtDCKH.ResetText();
            txtSDTKH.ResetText();

            txtMaKH.Properties.ReadOnly = false;
            txtTenKH.Properties.ReadOnly = false;
            txtDCKH.Properties.ReadOnly = false;
            txtSDTKH.Properties.ReadOnly = false;
            dgKH.Enabled = false;
        }

        // Xử lí sự kiện Click của nút "Sửa" Khách hàng
        private void btnSuaKH_Click(object sender, EventArgs e)
        {
            // Thiết lập trạng thái cho các control
            update = 1;
            btnThemKH.Enabled = false;
            btnSuaKH.Enabled = false;
            btnXoaKH.Enabled = false;
            btnLuuKH.Enabled = true;
            btnHuyKH.Enabled = true;
            btnThoatKH.Enabled = true;
            txtTenKH.Properties.ReadOnly = true;
            txtTenKH.Properties.ReadOnly = false;
            txtSDTKH.Properties.ReadOnly = false;
            txtDCKH.Properties.ReadOnly = false;
            dgKH.Enabled = true;
        }

        // Xử lí sự kiện Click của nút "Xóa" Khách hàng
        private void btnXoaKH_Click(object sender, EventArgs e)
        {
            // Thiết lập trạng thái cho các control
            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
            btnThoat.Enabled = true;
            if (MessageBox.Show("Ban co chac chan muon xoa?", "Thong bao", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                SqlCommand comm = new SqlCommand();
                comm.Connection = _classConnection.con;
                comm.CommandType = CommandType.Text;
                comm.CommandText = "Delete From KHACH_HANG Where MAKHACHHANG=@MAKHACHHANG";
                comm.Parameters.Add("MAKHACHHANG", SqlDbType.NVarChar).Value = txtMaKH.Text;
                comm.ExecuteNonQuery();
                MessageBox.Show("Xoa thanh cong");
                LoadData();
             }

       
    }
        // Xử lí sự kiện Click của nút "Hủy" khách hàng
        private void btnHuyKH_Click(object sender, EventArgs e)
        {
            LoadData();
        }

        // Xử lí sự kiện Click của nút "Thoát"
        private void btnThoatKH_Click(object sender, EventArgs e)
        {
            this.Close();
            _classConnection.con.Close();
        }

        // Xử lí sự kiện Click của nút "Lưu" khách hàng
        private void btnLuuKH_Click(object sender, EventArgs e)
        {
            try
            {
                // Kiểm tra các trường phải được nhập dữ liệu đầy đủ
                if (txtMaKH.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'Mã Khách hàng'", "Thông báo");
                    return;
                }


                if (txtTenKH.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'Tên Khách hàng'", "Thông báo");
                    return;
                }

                if (txtSDTKH.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'SĐT Khách hàng'", "Thông báo");
                    return;
                }

                if (txtDCKH.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'Địa chỉ Khách hàng'", "Thông báo");
                    return;
                }

                

              
                if (update == 0)
                {
                    // Kiểm tra Mã khách hàng đã tồn tại trong CSDL hay chưa khi thêm một khách hàng mới

                    SqlCommand comm = new SqlCommand();
                    comm.Connection = _classConnection.con;
                    comm.CommandType = CommandType.Text;
                    comm.CommandText = "Select * From KHACH_HANG Where MAKHACHHANG=@MAKHACHHANG";
                    comm.Parameters.Add("MAKHACHHANG", SqlDbType.VarChar).Value = txtMaKH.Text;
                    comm.ExecuteNonQuery();
                    da = new SqlDataAdapter();
                    ds = new DataSet();
                    da.SelectCommand = comm;
                    da.Fill(ds);
                    dt = ds.Tables[0];
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        MessageBox.Show("Đã tồn tại khách hàng có mã '" + txtMaKH.Text.ToUpper() + "'! \nVui lòng kiểm tra lại!");
                        return;
                    }


                    //// Kiểm tra Tên khách hàng đã tồn tại trong CSDL hay chưa khi thêm một khách hàng mới
                    //SqlDataAdapter daa = new SqlDataAdapter();
                    //DataSet das = new DataSet();
                    //DataTable dat = new DataTable();

                    //SqlCommand commd = new SqlCommand();
                    //commd.Connection = _classConnection.con;
                    //commd.CommandType = CommandType.Text;
                    //commd.CommandText = "Select * From KHACH_HANG Where TENKHACHHANG=@TENKHACHHANG";
                    //commd.Parameters.Add("TENKHACHHANG", SqlDbType.VarChar).Value = txtTenKH.Text;
                    //commd.ExecuteNonQuery();
                    //daa = new SqlDataAdapter();
                    //das = new DataSet();
                    //daa.SelectCommand = commd;
                    //daa.Fill(das);
                    //dat = das.Tables[0];
                    //if (dat != null && dat.Rows.Count > 0)
                    //{
                    //    MessageBox.Show("Đã tồn tại tên Khách hàng'" + txtTenKH.Text + "'! \nVui lòng kiểm tra lại!");
                    //    return;
                    //}



                    // Lưu khách hàng mới vào cơ sở dữ liệu
                    com = _classConnection.con.CreateCommand();
                    com.CommandText = "Insert Into KHACH_HANG Values(@MAKHACHHANG,@TENKHACHHANG,@DIACHIKH,@SDTKHACHHANG)";
                    com.Parameters.Add("@MAKHACHHANG", SqlDbType.VarChar).Value = txtMaKH.EditValue;
                    com.Parameters.Add("@TENKHACHHANG", SqlDbType.VarChar).Value = txtTenKH.EditValue;
                    com.Parameters.Add("@DIACHIKH", SqlDbType.VarChar).Value = txtDCKH.EditValue;
                    com.Parameters.Add("@SDTKHACHHANG", SqlDbType.VarChar).Value = txtSDTKH.EditValue;
                    com.ExecuteNonQuery();

                    MessageBox.Show("Đã thêm khách hàng vào thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
                else
                {
                    // Cập nhật thông tin khách hàng của cơ sở dữ liệu
                    txtMaKH.Properties.ReadOnly = true;
                    com = _classConnection.con.CreateCommand();
                    com.CommandText = "Update KHACH_HANG set MAKHACHHANG= @MAKHACHHANG, TENKHACHHANG = @TENKHACHHANG,DIACHIKH = @DIACHIKH, SDTKHACHHANG = @SDTKHACHHANG where MAKHACHHANG=@MAKHACHHANG";
                    com.Parameters.Add("@MAKHACHHANG", SqlDbType.VarChar).Value = txtMaKH.EditValue;
                    com.Parameters.Add("@TENKHACHHANG", SqlDbType.VarChar).Value = txtTenKH.EditValue;
                    com.Parameters.Add("@DIACHIKH", SqlDbType.VarChar).Value = txtDCKH.EditValue;
                    com.Parameters.Add("@SDTKHACHHANG", SqlDbType.VarChar).Value = txtSDTKH.EditValue;
                    com.ExecuteNonQuery();

                    MessageBox.Show("Đã cập nhật thông tin khách hàng!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);


                }
                LoadData();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }

        // Code chỉ cho phép nhập số vào trường SĐT Nhà cung cấp
        private void txtSDTNCC_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        // Code chỉ cho phép nhập số vào trường SĐT Khách hàng
        private void txtSDTKH_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
                e.Handled = true;
        }

     }
}